import md5 from '../common/md5.js'
import dokey from '../common/dokey.js'

const request = (config) => {
	// 基地址
	// #ifdef APP-PLUS
	// const baseURL = 'http://org.loveworldzh.com/api/' //测试
	const baseURL = 'https://api.loveworldzh.com/api/' // 正式
	// #endif

	// #ifdef H5
	const baseURL = '/api/' // 本地
	// const baseURL = 'http://org.loveworldzh.com/api/' // 测试
	// const baseURL = 'https://api.loveworldzh.com/api/' // 正式
	// #endif

	var token = uni.getStorageSync('token') // token
	var secretdate = dokey.secretdate() // 时间戳

	if (!config.data) {
		config.data = {}
	}

	// 将参数对象里面的元素按字母排序
	let obj = config.data
	// 判断token是否存在
	if (token) {
		obj.token = token
		obj.v = '1.1'
	} else {
		obj.v = '1.1'
	}

	// let sortData = {} // 排序后的对象
	// Object.keys(obj).sort().map(key => {
	// 	sortData[key] = obj[key]
	// })

	// 二次签名加密
	// var secretedOne = md5(JSON.stringify(sortData) + dokey.getkey() + secretdate)
	var secretedOne = md5(dokey.getkey() + secretdate)
	var secreted = md5(secretedOne) // 签名

	// 请求地址
	config.url = baseURL + config.url + '?auth_sign=' + secreted + '&auth_timestamp=' + secretdate

	// 请求头
	config.header = {
		'Content-type': 'application/x-www-form-urlencoded'
	}

	let promise = new Promise(function(resolve, reject) {
		uni.showLoading({
			mask: true,
			title: '加载中...'
		})
		uni.request(config).then(responses => {
			if (!!responses[0]) {
				reject(responses[0]);
			} else {
				uni.hideLoading()
				let response = responses[1].data;
				if (response.status) {
					// 成功返回
					resolve(response);
				} else {
					uni.showToast({
						title: response.msg,
						duration: 2000,
						icon: 'none',
					});
					if (response.code == 1) {
						// 未登录
						setTimeout(function() {
							uni.navigateTo({
								url: '/pages/login/login'
							})
						}, 1000)
					}
					resolve(response);
				}
			}
		}).catch(error => {
			console.error('请求错误:', error)
			reject(error);
		})
	})
	return promise;
};

export default request;
